package com.yxh.www.author.api;

import com.yxh.www.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 授权中心 - 系统用户API集
 * </p>
 *
 * @author yangxiaohui
 * @since 2020/5/8
 */
@FeignClient(value = "author-server",contextId = "authorSmUser")
public interface AuthorSmUserApi {
    /**
     * 新增系统用户信息
     * `/smUser/addSmUser`
     *
     * @param userName  用户名称
     * @param userPhone 手机号码
     * @param loginPass 登录密码
     * @param userPhoto 用户头像    非必填
     * @param userMail  用户邮箱    非必填
     * @return 统一响应 {@link Result}
     */
    @PostMapping("/smUser/addSmUser")
    Result<Object> addSmUser(@RequestParam String userName,
                             @RequestParam String userPhone,
                             @RequestParam String loginPass,
                             @RequestParam(required = false) String userPhoto,
                             @RequestParam(required = false) String userMail);

    /**
     * 根据用户ID修改用户信息
     * `/smUser/modifySmUser`
     *
     * @param id        用户ID
     * @param userName  用户名称
     * @param userPhone 手机号码    非必填
     * @param loginPass 登录密码    非必填
     * @param userPhoto 用户头像    非必填
     * @param userMail  用户邮箱    非必填
     * @return 统一响应 {@link Result}
     */
    @PutMapping("/smUser/modifySmUser")
    Result<Object> modifySmUser(@RequestParam String id,
                                @RequestParam(required = false) String userName,
                                @RequestParam(required = false) String userPhone,
                                @RequestParam(required = false) String loginPass,
                                @RequestParam(required = false) String userPhoto,
                                @RequestParam(required = false) String userMail);

    /**
     * 根据用户ID删除单个用户
     * `/smUser/removeSmUser`
     *
     * @param id 用户ID   必填
     * @return 统一响应 {@link Result}
     */
    @DeleteMapping("/smUser/removeSmUser")
    Result<Object> removeSmUser(@RequestParam String id);

    /**
     * 根据用户ID删除多个用户
     * `/smUser/removeSmUsers`
     *
     * @param ids 用户ID集合   必填
     * @return 统一响应 {@link Result}
     */
    @DeleteMapping("/smUser/removeSmUsers")
    Result<Object> removeSmUsers(@RequestParam String[] ids);

    /**
     * 根据指定参数获取用户列表
     * `/smUser/listSmUser`
     *
     * @param userName  用户名称    非必填-模糊匹配
     * @param userPhone 手机号码    非必填-模糊匹配
     * @param userMail  用户邮箱    非必填-模糊匹配
     * @return 统一响应 {@link Result}
     */
    @GetMapping("/smUser/listSmUser")
    Result<Object> listSmUser(@RequestParam(required = false) String userName,
                              @RequestParam(required = false) String userPhone,
                              @RequestParam(required = false) String userMail);

    /**
     * 根据指定参数获取用户列表
     * `/smUser/pageSmUser`
     *
     * @param userName  用户名称    非必填-模糊匹配
     * @param userPhone 手机号码    非必填-模糊匹配
     * @param userMail  用户邮箱    非必填-模糊匹配
     * @param pageNum   页码          默认值 1
     * @param pageSize  页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    @GetMapping("/smUser/pageSmUser")
    Result<Object> pageSmUser(@RequestParam(required = false) String userName,
                              @RequestParam(required = false) String userPhone,
                              @RequestParam(required = false) String userMail,
                              @RequestParam(defaultValue = "1") Long pageNum,
                              @RequestParam(defaultValue = "20") Long pageSize);

    /**
     * 用户登录 获取Token
     * `/smUser/authorSmUser`
     *
     * @param userName  用户名 非必填
     * @param userPhone 用户手机号 非必填
     * @param loginPass 登录密码 必填
     * @return 统一响应 {@link Result}
     */
    @PostMapping("/smUser/authorSmUser")
    Result<Object> authorSmUser(@RequestParam(required = false) String userName,
                                @RequestParam(required = false) String userPhone,
                                @RequestParam String loginPass);

}
